home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 26
/
AMIGAplus Sonderheft 26 (2000)(Falke)(DE)(Track 1 of 2)[!].iso
/
Updates
/
HD-Installer
/
-WHDLoad-
/
WHDLoad_dev
/
Patcher1.04
/
Patcher15.ASM
< prev
next >
Wrap
Assembly Source File
|
1999-03-29
|
59KB
|
3,281 lines
;V1.04 ERRORMESSAGE IF PATCH WAS CLICKED WITH NO PARAMETER SELECTED
;V1.03 VERSIONSTRING ADDED, CRC16-EVALROUTINE ADDED
;V1.02 FSSM-DEVICEPOINTER STORED, ADDED DRIVEINHIBIT-OPTION
;V1.01 COMMANDLINEPARAMETER ADDED
;V1.00 INITIAL REVISION
INCDIR ASM-ONE:INCLUDE2.0/
INCLUDE LIBRARIES/DOS_LIB.I
INCLUDE LIBRARIES/FILEHANDLER.I
INCLUDE LIBRARIES/DOSEXTENS.I
INCLUDE LIBRARIES/DISKFONT_LIB.I
INCLUDE EXEC/EXEC_LIB.I
INCLUDE EXEC/MEMORY.I
INCLUDE GRAPHICS/GRAPHICS_LIB.I
INCLUDE INTUITION/INTUITION_LIB.I
INCLUDE INTUITION/INTUITION.I
INCLUDE DEVICES/TRACKDISK.I
INCLUDE EXEC/IO.I
;_SYSBASE EQU 4
INCDIR ASM-ONE:OWN/Patcher/
;VERSION=1
;SUBVERSION=4
debug=0
FlaggenTEMP = activate!WINDOWDRAG!WINDOWCLOSE ;!REPORTMOUSE
FLAGGEN = FLAGGENTEMP!WBENCHWINDOW!WINDOWDEPTH!GIMMEZEROZERO
ICDMPFLTEMP = GADGETUP!ACTIVEWINDOW ;!MOUSEBUTTONS
ICDMPFL = ICDMPFLTEMP!INACTIVEWINDOW!CLOSEWINDOW
JAM2 = 1
;MODE_READWRITE = $3ED
;patcher-includefile for V1.03
PCH_FILECOUNT = $80004450
PCH_ADAPTOR = $80004451
PCH_DISKNAME = $80004452
PCH_CHECKDISK = $80004453
PCH_FILENAME = $80004454
PCH_SPECIAL = $80004455
PCH_CHANGES = $80004456
PCH_PROCESSING = $80004457
PCH_NAME = $80004458
PCH_MINVERSION = $80004459
PCH_LOADOFFSET = $8000445A
PCH_INIT = $8000445B
PCH_STATE = $8000445C
PCH_STATE2 = $8000445D
PCH_APPENDSPACE = $8000445E
PCH_SAVEDATA = $8000445F
PCH_DATALENGTH = $80004460
PCH_BOOTBLOCK = $80004461
PCH_FINISH = $80004462
PCH_ERRORINPARAMETER = $80004463
PCH_SAVEPGM = $80004464
PTB_DOSBASE = $0
PTB_ADDRESSOFFILE = $4
PTB_INTUITIONBASE = $8
PTB_GFXBASE = $C
PTB_WINDOW = $10
PTB_FILENAME = $14
PTB_FULLNAME = $18
PTB_FILESIZE = $1C
PTB_DISKNAME = $20
PTB_OPENDEVICE = $24
PTB_DEVICESOURCEPTR = $28
PTB_DEVICEDESTPTR = $2C
PTB_SPACE = $30
PTB_FORMATDEST = $34
PTB_REQUEST = $38
;--- new since version 1.02 ---
PTB_FSSMSOURCEPTR = $3C
PTB_FSSMDESTPTR = $40
PTB_INHIBITDRIVE = $44
PTB_ENABLEDRIVE = $48
;--- new since version 1.03 ---
PTB_CRC16 = $4C
SECTION Editor,CODE
BRA.S HP
DC.B 0,'$VER: Patcher 1.04 (17-jun-97 2:00:00)',0
EVEN
HP
BASEREG DOSBAS,A5
LEA.L DOSBAS(PC),A5
MOVE.L A7,OSSTACK(A5)
ifne debug
lea .line(PC),a0
bra.s .contdb
.line dc.b '-sdf2: -pasm-one:own/patcher/parameter/imagerrocknroll',0
EVEN
.contdb
endc
BSR.W EXAMCL
MOVE.L (_SYSBASE).W,A6
LEA.L INTUINAME(PC),A1
MOVE.L #0,D0
JSR _LVOOpenLibrary(A6) ;Intuition öffnen
TST.L D0
BEQ.W ERR
MOVE.L D0,INTUIBASE(A5) ;Zeiger sichern
MOVE.L (_SYSBASE).W,A6
LEA.L DOSNAM(PC),A1
MOVEQ.L #0,D0
JSR _LVOOpenLibrary(A6) ;DOS öffnen
TST.L D0
BEQ.W ERR
MOVE.L D0,DOSBAS(A5) ;Zeiger sichern
MOVE.L (_SYSBASE).W,A6
LEA.L GRANAME(PC),A1
MOVEQ.L #0,D0
JSR _LVOOpenLibrary(A6) ;Graphic-Lib öffnen
TST.L D0
BEQ.W ERR
MOVE.L D0,GRABASE(A5) ;Zeiger sichern
MOVE.L (_SYSBASE).W,A6
LEA.L DISKFNTNAME(PC),A1
MOVEQ.L #0,D0
JSR _LVOOPENLIBRARY(A6) ;Diskfont-Lib öffnen
TST.L D0
BEQ.W ERR
MOVE.L D0,DISKFNTBASE(A5) ;Zeiger sichern
MOVE.L DISKFNTBASE(PC),A6
LEA.L RUBY_FNT(PC),A0
JSR _LVOOPENDISKFONT(A6)
TST.L D0
BEQ.W ERR
MOVE.L #$28,D0
MOVE.L #MEMF_PUBLIC!MEMF_CLEAR,D1
MOVE.L (_SYSBASE).W,A6
JSR _LVOALLOCMEM(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,MYPORT(A5)
MOVE.L #$38,D0
MOVE.L #MEMF_PUBLIC!MEMF_CLEAR,D1
MOVE.L (_SYSBASE).W,A6
JSR _LVOALLOCMEM(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,BOOTIORQ(A5)
MOVE.L #$38,D0
MOVE.L #MEMF_PUBLIC!MEMF_CLEAR,D1
MOVE.L (_SYSBASE).W,A6
JSR _LVOALLOCMEM(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,DESTIORQ(A5)
MOVE.L #$38,D0
MOVE.L #MEMF_PUBLIC!MEMF_CLEAR,D1
MOVE.L (_SYSBASE).W,A6
JSR _LVOALLOCMEM(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,SOURCEIORQ(A5)
MOVE.L #$48,D0
MOVE.L #MEMF_PUBLIC!MEMF_CLEAR,D1
MOVE.L (_SYSBASE).W,A6
JSR _LVOALLOCMEM(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,DOSPACKETS(A5)
MOVEQ.L #-1,D0
MOVE.L (_SYSBASE).W,A6
JSR _LVOALLOCSIGNAL(A6)
CMP.L #-1,D0
BEQ.W ERR
MOVE.L D0,SIGNALSTORE
MOVE.L MYPORT(PC),A4
MOVE.B D0,MP_SIGBIT(A4)
SUB.L A1,A1
MOVE.L (_SYSBASE).W,A6
JSR _LVOFINDTASK(A6)
MOVE.L D0,MP_SIGTASK(A4)
MOVE.B #PA_SIGNAL,MP_FLAGS(A4)
CLR.B LN_PRI(A4)
CLR.L LN_NAME(A4)
MOVE.B #NT_MSGPORT,LN_TYPE(A4)
MOVE.L A4,A1
JSR _LVOADDPORT(A6)
ST.B PORTOK(A5)
MOVE.L MYPORT(PC),A0
MOVE.L BOOTIORQ(PC),A1
MOVE.L A0,MN_REPLYPORT(A1)
MOVE.W #$20,MN_LENGTH(A1)
MOVE.B #NT_MESSAGE,LN_TYPE(A1)
MOVE.L DESTIORQ(PC),A1
MOVE.L A0,MN_REPLYPORT(A1)
MOVE.W #$20,MN_LENGTH(A1)
MOVE.B #NT_MESSAGE,LN_TYPE(A1)
MOVE.L SOURCEIORQ(PC),A1
MOVE.L A0,MN_REPLYPORT(A1)
MOVE.W #$20,MN_LENGTH(A1)
MOVE.B #NT_MESSAGE,LN_TYPE(A1)
MOVE.L DOSPACKETS(PC),A1
MOVE.L A0,MN_REPLYPORT(A1)
MOVE.W #$30,MN_LENGTH(A1)
MOVE.B #NT_MESSAGE,LN_TYPE(A1)
TST.B EXEC1PARAM
BEQ.W .ALLP
LEA.L MEMORYBASE(PC),A3
MOVE.L #PARAMFILENAM,D1 ;LOAD SINGLE PARAMETER (COMMAND-LINE-
MOVE.L DOSBAS(PC),A6 ; VERSION)
JSR _LVOLOADSEG(A6)
TST.L D0
BEQ.W .ENDP
LSL.L #2,D0
ADDQ.L #4,D0
MOVE.L D0,(A3)
MOVE.L D0,A0
CLR.L (A0)
CMP.L #'PTCH',8(A0)
BNE.S .SP8
MOVE.L 4(A0),A0
.SP31 CMP.L #PCH_MINVERSION,(A0)+
BEQ.S .SP30
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .ENDP
BRA.S .SP31
.SP30 TST.L (A0)
BEQ.W .ENDP
MOVE.L (A0),A0
CMP.B #'V',(A0)+
BNE.W ERR
MOVEQ.L #0,D1 ;MAINVERSIONCHECK
.SPV1 MOVE.B (A0)+,D0
BEQ.W ERR
AND.W #$F,D0
LSL.W #4,D1
OR.W D0,D1
CMP.B #'.',(A0)
BNE.S .SPV1
CMP.W #1,D1 ;VERSION-#
BHI.S .SP8
ADDQ.L #1,A0 ;SKIP '.'
MOVEQ.L #0,D1
MOVE.B (A0)+,D0
BEQ.W ERR
AND.W #$F,D0
LSL.W #4,D1
OR.W D0,D1
MOVE.B (A0)+,D0
BEQ.W ERR
AND.W #$F,D0
LSL.W #4,D1
OR.W D0,D1
CMP.W #4,D1 ;SUBVERSION-#
BHI.S .SP8
BRA.W .ENDP
.SP8 LEA.L MEMORYBASE(PC),A3
.SP7 MOVE.L (A3),A2
TST.L (A2)
BEQ.S .SP6
MOVE.L (A3),A3
BRA.S .SP7
.SP6 CLR.L (A3)
MOVE.L A2,D1
SUBQ.L #4,D1
LSR.L #2,D1
MOVE.L DOSBAS(PC),A6
JSR _LVOUNLOADSEG(A6)
BRA.W .ENDP
.ALLP LEA.L LOCKNAM(PC),A1 ;LOAD PARAMETERS
MOVE.L A1,D1
MOVE.L #MODE_READWRITE,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOLOCK(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,PARAMLOCK(A5)
MOVE.L PARAMLOCK(PC),D1
MOVE.L #PARAMINFO,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOEXAMINE(A6)
TST.L D0
BEQ.W ERR
BRA.S .1
.3 MOVE.L PARAMLOCK(PC),D1
MOVE.L #PARAMINFO,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOEXNEXT(A6)
TST.L D0
BEQ.W .2
.1 LEA.L PARAMINFO,A0
CMP.L #-3,FIB_DIRENTRYTYPE(A0)
BNE.S .3
LEA.L MEMORYBASE(PC),A3
.5 TST.L (A3)
BEQ.S .4
MOVE.L (A3),A3
BRA.S .5
.4
LEA.L PARAMINFO,A0
LEA.L FIB_FILENAME(A0),A1
LEA.L BUFFILNAM(PC),A0
MOVEQ.L #$68-1,D0
.26 MOVE.B (A1)+,(A0)+
DBF D0,.26
MOVE.L #FILENAM,D1
MOVE.L DOSBAS(PC),A6
JSR _LVOLOADSEG(A6)
TST.L D0
BEQ.S .3
LSL.L #2,D0
ADDQ.L #4,D0
MOVE.L D0,(A3)
MOVE.L D0,A0
CLR.L (A0)
CMP.L #'PTCH',8(A0)
BNE.S .8
MOVE.L 4(A0),A0
.31 CMP.L #PCH_MINVERSION,(A0)+
BEQ.S .30
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .3
BRA.S .31
.30 TST.L (A0)
BEQ.W .3
MOVE.L (A0),A0
CMP.B #'V',(A0)+
BNE.W ERR
MOVEQ.L #0,D1 ;MAINVERSIONCHECK
.APV1 MOVE.B (A0)+,D0
BEQ.W ERR
AND.W #$F,D0
LSL.W #4,D1
OR.W D0,D1
CMP.B #'.',(A0)
BNE.S .APV1
CMP.W #1,D1 ;VERSION-#
BHI.S .8
ADDQ.L #1,A0 ;SKIP '.'
MOVEQ.L #0,D1
MOVE.B (A0)+,D0
BEQ.W ERR
AND.W #$F,D0
LSL.W #4,D1
OR.W D0,D1
MOVE.B (A0)+,D0
BEQ.W ERR
AND.W #$F,D0
LSL.W #4,D1
OR.W D0,D1
CMP.W #4,D1 ;SUBVERSION-#
BHI.S .8
BRA.W .3
.8 LEA.L MEMORYBASE(PC),A3
.7 MOVE.L (A3),A2
TST.L (A2)
BEQ.S .6
MOVE.L (A3),A3
BRA.S .7
.6 CLR.L (A3)
MOVE.L A2,D1
SUBQ.L #4,D1
LSR.L #2,D1
MOVE.L DOSBAS(PC),A6
JSR _LVOUNLOADSEG(A6)
BRA.W .3
.2 MOVE.L PARAMLOCK(PC),D1
MOVE.L DOSBAS(PC),A6
JSR _LVOUNLOCK(A6)
CLR.L PARAMLOCK ;END OF LOADING PARAMETERS
.ENDP LEA.L MEMORYBASE(PC),A3
TST.L (A3)
BEQ.W ERR
MOVEQ.L #0,D0
.10 MOVE.L (A3),A3
ADDQ.W #1,D0
TST.L (A3)
BNE.S .10
MOVE.W D0,PARAMCOUNT
TST.W PARAMCOUNT
BEQ.W ERR
MOVE.L #$FFFF,D0
MOVEQ.L #0,D1
MOVE.W PARAMCOUNT,D1
CMP.W #5,D1
BLS.S .PI1
MULU.W #5,D0
DIVU.W D1,D0
BRA.S .11
.PI1 MOVE.L #$FFFF,D0
.11 LEA.L PROPINFO1(PC),A0
MOVE.W D0,PI_VERTBODY(A0)
MOVE.W D0,LENGTHBODY
MOVE.W PARAMCOUNT(PC),D1
SUBQ.W #1,D1
.27 LEA.L MEMORYBASE(PC),A4
MOVE.W PARAMCOUNT(PC),D0
SUBQ.W #1,D0
.15 DBF D0,.13
DBF D1,.27
BRA.S .14
.13
.16 MOVE.L (A4),A3
TST.L (A3)
BEQ.S .15
MOVE.L $4(A3),A1
.18 CMP.L #PCH_NAME,(A1)+
BEQ.S .17
ADDQ.L #4,A1
TST.L (A1)
BEQ.W ERR
BRA.S .18
.17 MOVE.L (A1),A1
MOVE.L (A3),A2
MOVE.L 4(A2),A0
.19 CMP.L #PCH_NAME,(A0)+
BEQ.S .20
ADDQ.L #4,A0
TST.L (A0)
BEQ.W ERR
BRA.S .19
.20 MOVE.L (A0),A0
.23 CMPM.B (A1)+,(A0)+
BHI.S .21
BLO.S .22
TST.B (A1)
BEQ.S .21
TST.B (A0)
BEQ.S .22
BRA.S .23
.22 MOVE.L (A2),A1
MOVE.L A2,(A4)
MOVE.L A3,(A2)
MOVE.L A1,(A3)
.21 MOVE.L (A4),A4
BRA.S .15
.14 MOVE.W PARAMCOUNT(PC),D0
CMP.W #$5,D0
BLS.S .24
MOVEQ.L #6,D0
.24 MOVEQ.L #6,D1
SUB.W D0,D1
MULU.W #$18,D1
JMP .25(PC,D1.W)
.25 BCLR #0,AUFLAGS
BCLR #0,ADFLAGS
BCLR #0,P1FLAGS
MOVEQ.L #5,D0
BSR.W GETPARPTR
MOVE.L D0,T5PTR
BCLR #0,G5FLAGS
NOP
NOP
MOVEQ.L #4,D0
BSR.W GETPARPTR
MOVE.L D0,T4PTR
BCLR #0,G4FLAGS
NOP
NOP
MOVEQ.L #3,D0
BSR.W GETPARPTR
MOVE.L D0,T3PTR
BCLR #0,G3FLAGS
NOP
NOP
MOVEQ.L #2,D0
BSR.W GETPARPTR
MOVE.L D0,T2PTR
BCLR #0,G2FLAGS
NOP
NOP
MOVEQ.L #1,D0
BSR.W GETPARPTR
MOVE.L D0,T1PTR
MOVE.L INTUIBASE(PC),A6
LEA.L WINDOW1DATEN,a0
JSR _LVOOpenWindow(a6) ;Window öffnen
TST.L D0
BEQ.W ERR
MOVE.L D0,WINDOW1 ;Zeiger sichern
MOVE.L WINDOW1(PC),A0
MOVE.L $32(A0),A4
MOVE.L A4,WIN1RASTPORT
LEA.L RUBY_FNT(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOOPENFONT(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,A0
CMP.W #$8,$14(A0)
BNE.W ERR
MOVE.L A4,A1
MOVE.L GRABASE(PC),A6
JSR _LVOSETFONT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #3,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #25+405,D0
MOVE.L #18,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #5,D0
LEA.L POINTARRAY1(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOPOLYDRAW(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #449,D0
MOVE.L #81,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #5,D0
LEA.L POINTARRAY2(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOPOLYDRAW(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #449,D0
MOVE.L #123,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #5,D0
LEA.L POINTARRAY3(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOPOLYDRAW(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #1,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #79,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L #NOSELECTEND-NOSELECT,D0
MOVE.L WIN1RASTPORT(PC),A1
LEA.L NOSELECT(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #89,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVEQ.L #0,D0
MOVE.L #SRCDEVICE-SRCINFO-1,D0
LEA.L SRCDEVICE(PC),A1
.T1 ADDQ.L #1,D0
TST.B (A1)+
BNE.S .T1
MOVE.L WIN1RASTPORT(PC),A1
LEA.L SRCINFO(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #99,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L #DESTDEVICE-DESTINFO-1,D0
LEA.L DESTDEVICE(PC),A1
.T2 ADDQ.L #1,D0
TST.B (A1)+
BNE.S .T2
MOVE.L WIN1RASTPORT(PC),A1
LEA.L DESTINFO(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #121,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L #WELCOMEEND-WELCOME,D0
MOVE.L WIN1RASTPORT(PC),A1
LEA.L WELCOME(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #131,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L #WRITTENEND-WRITTEN,D0
MOVE.L WIN1RASTPORT(PC),A1
LEA.L WRITTEN(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
; TST.B EXEC1PARAM
; BEQ.S Y
; ;1PARAMETER-STUFF HERE
BRA.S Y
SCHLAEFT BSR.W SCHLAFEN
.1 BTST.L #$12,d4 ;WINDOW gerade aktiviert?
BEQ.S SCHLAEFT
Y BSR.W SCHLAFEN
BTST.L #$13,d4 ;WINDOW gerade inaktiviert?
BNE.S SCHLAEFT
BTST.L #9,D4 ;QUIT GEDRÜCKT?
BEQ.S .10
BRA.S ENDE
.10 BTST.L #6,D4 ;GADGET LOSGELASSEN?
BEQ.S .8
BSR.W CHECKGADGETS
BRA.S Y
.8 BTST.L #3,D4 ;Maustaste angeklickt?
beq.w next1
next1
btst #7,$bfe001
beq ende
BRA.S Y
ENDE MOVEQ.L #0,D0
BEQ.S ENDE1
ERR MOVE.L OSSTACK(PC),A7
MOVEQ.L #20,D0
ENDE1 MOVE.L D0,-(A7)
MOVE.L INTUIBASE(PC),A6
TST.L WINDOW1
BEQ.S .1
MOVE.L WINDOW1(PC),A0
JSR _LVOCloseWindow(A6) ;Window schließen
.1 TST.L FILHANDLE
BEQ.S .12
MOVE.L FILHANDLE(PC),D1
MOVE.L DOSBAS(PC),A6
JSR _LVOCLOSE(A6)
.12 LEA.L MEMORYBASE(PC),A3
TST.L (A3)
BEQ.S .9
.10 MOVE.L (A3),A2
TST.L (A2)
BEQ.S .11
MOVE.L (A3),A3
BRA.S .10
.11 CLR.L (A3)
MOVE.L A2,D1
SUBQ.L #4,D1
LSR.L #2,D1
MOVE.L DOSBAS(PC),A6
JSR _LVOUNLOADSEG(A6)
BRA.S .12
.9 TST.L PARAMLOCK(A5)
BEQ.S .2
MOVE.L PARAMLOCK(PC),D1
MOVE.L DOSBAS(PC),A6
JSR _LVOUNLOCK(A6)
.2
TST.B PORTOK(A5)
BEQ.S .S2
MOVE.L MYPORT(PC),A1
MOVE.L (_SYSBASE).W,A6
JSR _LVOREMPORT(A6)
.S2
MOVE.L SIGNALSTORE(PC),D0
CMP.L #-1,D0
BEQ.S .S1
MOVE.L (_SYSBASE).W,A6
JSR _LVOFREESIGNAL(A6)
.S1 TST.L BOOTIORQ(A5)
BEQ.S .M1
MOVE.L BOOTIORQ(PC),A1
MOVE.L #$38,D0
MOVE.L (_SYSBASE).W,A6
JSR _LVOFREEMEM(A6)
.M1
TST.L DOSPACKETS(A5)
BEQ.S .M5
MOVE.L DOSPACKETS(PC),A1
MOVE.L #$48,D0
MOVE.L (_SYSBASE).W,A6
JSR _LVOFREEMEM(A6)
.M5
TST.L DESTIORQ(A5)
BEQ.S .M2
MOVE.L DESTIORQ(PC),A1
MOVE.L #$38,D0
MOVE.L (_SYSBASE).W,A6
JSR _LVOFREEMEM(A6)
.M2
TST.L SOURCEIORQ(A5)
BEQ.S .M3
MOVE.L SOURCEIORQ(PC),A1
MOVE.L #$38,D0
MOVE.L (_SYSBASE).W,A6
JSR _LVOFREEMEM(A6)
.M3
TST.L MYPORT(A5)
BEQ.S .M4
MOVE.L MYPORT(PC),A1
MOVE.L #$28,D0
MOVE.L (_SYSBASE).W,A6
JSR _LVOFREEMEM(A6)
.M4
TST.L GRABASE
BEQ.S .3
MOVE.L (_SYSBASE).W,A6
MOVE.L GRABASE(PC),A1
JSR _LVOcloselibrary(a6) ;Graphic-Lib schliessen
.3 TST.L DOSBAS
BEQ.S .6
MOVE.L (_SYSBASE).W,A6
MOVE.L DOSBAS(PC),A1
JSR _LVOcloselibrary(a6) ;DOS-Lib schliessen
.6 tst.l INTUIBASE
beq.s .4
move.l (_SYSBASE).W,A6
move.l INTUIBASE(PC),A1
jsr _LVOCloseLibrary(A6) ;Intuition-Lib schließen
.4 tst.l DISKFNTBASE
beq.s .5
move.l (_SYSBASE).W,A6
move.l DISKFNTBASE(PC),A1
jsr _LVOCloseLibrary(A6) ;DISKFONT-Lib schließen
.5 move.l (sp)+,d0
rts
*******************************************************************************
CHECKGADGETS
LEA.L MSGBUFFER+2(PC),A0
BTST.B #6,IM_CLASS+3-$14(A0)
BNE.S .2
MOVEQ.L #-1,D0
RTS
.2 MOVE.L IM_IADDRESS-$14(A0),D0
CMP.L #PROPGADGET1,D0
BEQ.W DRAWPARS
CMP.L #ARROWUP,D0
BEQ.W DRAWONEUP
CMP.L #ARROWDOWN,D0
BEQ.W DRAWONEDOWN
CMP.L #GADGET1,D0
BEQ.S .G1
CMP.L #GADGET2,D0
BEQ.S .G2
CMP.L #GADGET3,D0
BEQ.S .G3
CMP.L #GADGET4,D0
BEQ.S .G4
CMP.L #GADGET5,D0
BEQ.S .G5
CMP.L #PTCHGADGET,D0
BEQ.W REMPROT
MOVEQ.L #-1,D0
RTS
.G5 MOVEQ.L #5,D0
BRA.S .GT0
.G4 MOVEQ.L #4,D0
BRA.S .GT0
.G3 MOVEQ.L #3,D0
BRA.S .GT0
.G2 MOVEQ.L #2,D0
BRA.S .GT0
.G1 MOVEQ.L #1,D0
.GT0
MOVEQ.L #0,D2
MOVE.W POSOFPROP(PC),D2
ADD.W D0,D2
LEA.L MEMORYBASE(PC),A3
BRA.S .GT6
.GT4 MOVE.L (A3),A3
.GT6 DBF D2,.GT4
MOVE.L $4(A3),A3
MOVE.L A3,PARAMTABBASE
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #0,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A0
BCLR.B #3,RP_FLAGS+1(A0)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #72,D1
MOVE.L #448,D2
MOVE.L #102,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #114,D1
MOVE.L #448,D2
MOVE.L #134,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #1,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #79,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L PARAMTABBASE(PC),A0
.GT8 CMP.L #PCH_NAME,(A0)+
BEQ.S .GT7
ADDQ.L #4,A0
BRA.S .GT8
.GT7 MOVE.L (A0),A0
MOVE.L A0,A1
.GT9 TST.B (A1)+
BNE.S .GT9
MOVE.L A1,D0
SUB.L A0,D0
SUBQ.L #1,D0
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #89,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L PARAMTABBASE(PC),A0
.GT10 CMP.L #PCH_ADAPTOR,(A0)+
BEQ.S .GT11
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .GT17
BRA.S .GT10
.GT11 MOVE.L (A0),A0
MOVE.L A0,A1
BRA.S .GT15
.GT12 ADDQ.L #1,A1
.GT15 MOVE.B (A1),D0
BEQ.S .GT13
CMP.B #$A,D0
BNE.S .GT12
MOVE.L A1,D0
SUB.L A0,D0
MOVE.L A1,A4
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #99,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
ADDQ.L #1,A4
MOVE.L A4,A0
MOVE.L A0,A1
BRA.S .GT16
.GT14 ADDQ.L #1,A1
.GT16 MOVE.B (A1),D0
BEQ.S .GT13
CMP.B #$A,D0
BNE.S .GT14
.GT13 MOVE.L A1,D0
SUB.L A0,D0
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
.GT17 MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #121,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L #READYEND-READY,D0
MOVE.L WIN1RASTPORT(PC),A1
LEA.L READY(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
RTS
DRAWONEUP
MOVEQ.L #0,D0
MOVEQ.L #0,D1
MOVEQ.L #0,D2
MOVE.W POSOFPROP(PC),D2
MOVE.W PARAMCOUNT(PC),D1
SUBQ.W #5,D1
TST.W D2
BEQ.W .1
SUBQ.W #1,D2
MOVE.W D2,POSOFPROP
LEA.L PROPINFO1(PC),A0
; MOVE.W PI_VPOTRES(A0),D0
MOVE.L #$FFFF,D0
MULU.W D2,D0
DIVU.W D1,D0
MOVE.W D0,PI_VERTPOT(A0)
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T1PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T2PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T3PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T4PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T5PTR
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #0,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A0
BCLR.B #3,RP_FLAGS+1(A0)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #9,D1
MOVE.L #429,D2
MOVE.L #60,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
LEA.L PROPGADGET1(PC),A0
MOVE.L WINDOW1(PC),A1
LEA.L 0.W,A2
MOVE.L #6,D0
MOVE.L INTUIBASE(PC),A6
JSR _LVOREFRESHGLIST(A6)
.1 RTS
DRAWONEDOWN
MOVEQ.L #0,D0
MOVEQ.L #0,D1
MOVEQ.L #0,D2
MOVE.W POSOFPROP(PC),D2
MOVE.W PARAMCOUNT(PC),D1
SUBQ.W #5,D1
CMP.W D1,D2
BHS.W .1
ADDQ.W #1,D2
MOVE.W D2,POSOFPROP
LEA.L PROPINFO1(PC),A0
; MOVE.W PI_VPOTRES(A0),D0
MOVE.L #$FFFF,D0
MULU.W D2,D0
DIVU.W D1,D0
MOVE.W D0,PI_VERTPOT(A0)
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T1PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T2PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T3PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T4PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T5PTR
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #0,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A0
BCLR.B #3,RP_FLAGS+1(A0)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #9,D1
MOVE.L #429,D2
MOVE.L #60,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
LEA.L PROPGADGET1(PC),A0
MOVE.L WINDOW1(PC),A1
LEA.L 0.W,A2
MOVE.L #6,D0
MOVE.L INTUIBASE(PC),A6
JSR _LVOREFRESHGLIST(A6)
.1 RTS
DRAWPARS
MOVEQ.L #$0,D1
MOVEQ.L #0,D2
LEA.L PROPINFO1(PC),A0
; MOVE.W PI_VPOTRES(A0),D1
MOVE.W PARAMCOUNT(PC),D2
SUBQ.W #5,D2
MOVE.L #$FFFF,D1
DIVU.W D2,D1
LEA.L PROPINFO1(PC),A0
MOVE.W PI_VERTPOT(A0),D2
DIVU.W D1,D2
AND.L #$FFFF,D2
.GT18 MOVE.L D2,D1
ADDQ.W #5,D1
CMP.W PARAMCOUNT(PC),D1
BLS.S .GT3
TST.W D2
BEQ.S .GT3
SUBQ.W #1,D2
BRA.S .GT18
.GT3
MOVE.W D2,POSOFPROP
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T1PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T2PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T3PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T4PTR
ADDQ.L #1,D2
MOVE.L D2,D0
BSR.W GETPARPTR
MOVE.L D0,T5PTR
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #0,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A0
BCLR.B #3,RP_FLAGS+1(A0)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #9,D1
MOVE.L #429,D2
MOVE.L #60,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
LEA.L GADGET1(PC),A0
MOVE.L WINDOW1(PC),A1
LEA.L 0.W,A2
MOVE.L #5,D0
MOVE.L INTUIBASE(PC),A6
JSR _LVOREFRESHGLIST(A6)
RTS
REMPROT TST.L PARAMTABBASE(A5)
BNE.S .16
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #0,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A0
BCLR.B #3,RP_FLAGS+1(A0)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #72,D1
MOVE.L #448,D2
MOVE.L #82,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #1,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #79,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L #NOSELECT2END-NOSELECT2,D0
MOVE.L WIN1RASTPORT(PC),A1
LEA.L NOSELECT2(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
RTS
.16 LEA.L SPECIALSPACE,A0
MOVE.L #$C000/4-1,D0
.I1 CLR.L (A0)+
DBF D0,.I1
MOVE.L PARAMTABBASE(PC),A0
.1 CMP.L #PCH_INIT,(A0)+
BEQ.S .2
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .3
BRA.S .1
.2 MOVE.L (A0),A0
MOVEM.L D2-D7/A2-A6,-(A7)
JSR (A0)
MOVEM.L (A7)+,D2-D7/A2-A6
TST.L D0
BNE.W .ERRINPARM
.3 MOVE.L PARAMTABBASE(PC),A0
.4 CMP.L #PCH_FILECOUNT,(A0)+
BEQ.S .5
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .ERRINSTRUCT
BRA.S .4
.5 MOVEQ.L #-1,D6
MOVE.L (A0),D7
.6 ADDQ.L #1,D6
CMP.L D6,D7
BHI.W .18
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #0,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #114,D1
MOVE.L #448,D2
MOVE.L #134,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #1,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #121,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L #OPERFINIEND-OPERFINI,D0
MOVE.L WIN1RASTPORT(PC),A1
LEA.L OPERFINI(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L PARAMTABBASE(PC),A0
.F1 CMP.L #PCH_FINISH,(A0)+
BEQ.S .F2
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .F3
BRA.S .F1
.F2 TST.L (A0)
BEQ.S .F3
MOVE.L (A0),A0
MOVEM.L D2-D7/A2-A6,-(A7)
JSR (A0)
MOVEM.L (A7)+,D2-D7/A2-A6
.F3 BRA.W .E3
;----------------------------------------------------------------------
.ERRINLENGTH
MOVE.L #ERRORGAMEEND-ERRORGAME,D7
MOVE.L #ERRORGAME,D6
MOVE.L #ERRORLENGTHEND-ERRORLENGTH,D5
MOVE.L #ERRORLENGTH,D4
BRA.S .ERR
.ERRINSTRUCT
MOVEQ.L #0,D6
MOVE.L #ERRORINSTRUCTEND-ERRORINSTRUCT,D5
MOVE.L #ERRORINSTRUCT,D4
BRA.S .ERR
.ERRINPARM
MOVEQ.L #0,D6
MOVE.L #ERRORINPARMEND-ERRORINPARM,D5
MOVE.L #ERRORINPARM,D4
.ERR MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #0,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #114,D1
MOVE.L #448,D2
MOVE.L #134,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #1,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #121,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L D5,D0
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L D4,A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
TST.L D6
BEQ.S .E9
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #131,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L D7,D0
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L D6,A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
.E9 MOVE.L PARAMTABBASE(PC),A0
.E1 CMP.L #PCH_ERRORINPARAMETER,(A0)+
BEQ.S .E2
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .E3
BRA.S .E1
.E2 TST.L (A0)
BEQ.S .E3
MOVE.L (A0),A0
MOVEM.L D2-D7/A2-A6,-(A7)
JSR (A0)
MOVEM.L (A7)+,D2-D7/A2-A6
.E3 TST.L FILEMEMADR(A5)
BEQ.S .ER
MOVE.L FILEMEMADR(PC),A1
MOVE.L FILSIZE(PC),D0
ADDQ.L #7,D0
AND.L #$FFFFFFF8,D0
MOVE.L (_SYSBASE).W,A6
JSR _LVOFREEMEM(A6)
CLR.L FILEMEMADR(A5)
CLR.L FILSIZE(A5)
.ER
TST.L DEVICESOURCEPTR(A5)
BEQ.S .E4
MOVE.L DEVICESOURCEPTR(PC),A1
MOVE.L 4.W,A6
JSR _LVOCLOSEDEVICE(A6)
CLR.L DEVICESOURCEPTR(A5)
.E4 TST.L DEVICEDESTPTR(A5)
BEQ.S .E5
MOVE.L DEVICEDESTPTR(PC),A1
MOVE.L 4.W,A6
JSR _LVOCLOSEDEVICE(A6)
CLR.L DEVICEDESTPTR(A5)
.E5 RTS
;-------------------------------------------------------------------------
.18 CLR.L FILEMEMADR(A5)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #0,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #114,D1
MOVE.L #448,D2
MOVE.L #134,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #121,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #1,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L PARAMTABBASE(PC),A0
.7 CMP.L #PCH_STATE,(A0)+
BEQ.S .8
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .9
BRA.S .7
.8 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .9
MOVE.L (A0,D0.L),A0
MOVE.L A0,A1
BRA.S .10
.11 ADDQ.L #1,A1
.10 MOVE.B (A1),D0
BEQ.S .12
CMP.B #$A,D0
BNE.S .11
MOVE.L A1,D0
SUB.L A0,D0
MOVE.L A1,A4
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #131,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
ADDQ.L #1,A4
MOVE.L A4,A0
MOVE.L A0,A1
BRA.S .14
.13 ADDQ.L #1,A1
.14 MOVE.B (A1),D0
BEQ.S .12
CMP.B #$A,D0
BNE.S .13
.12 MOVE.L A1,D0
SUB.L A0,D0
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
BRA.S .15
.9 MOVE.L #INSCOPYEND-INSCOPY,D0
MOVE.L WIN1RASTPORT(PC),A1
LEA.L INSCOPY(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #131,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L #WAITPROCEND-WAITPROC,D0
MOVE.L WIN1RASTPORT(PC),A1
LEA.L WAITPROC(PC),A0
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
.15
MOVE.L PARAMTABBASE(PC),A0
.21 CMP.L #PCH_DISKNAME,(A0)+
BEQ.S .17
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .19
BRA.S .21
.17 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.W .19
MOVE.L (A0,D0.L),A0
LEA.L LOCKDISK(PC),A2
LEA.L FILNAME(PC),A1
.20 MOVE.B (A0),(A2)+
MOVE.B (A0)+,(A1)+
BNE.S .20
MOVE.B #':',-1(A1)
MOVE.B #':',-1(A2)
CLR.B (A1)
CLR.B (A2)
MOVE.L A1,STRFILNAME(A5)
LEA.L LOCKDISK(PC),A1
MOVE.L A1,D1
MOVE.L #MODE_READWRITE,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOLOCK(A6)
TST.L D0
BEQ.W .ERRINPARM
MOVE.L D0,D1
MOVE.L DOSBAS(PC),A6
JSR _LVOUNLOCK(A6)
CLR.L PARAMLOCK
.19
;MANUELLER DISKCHECK
MOVE.L PARAMTABBASE(PC),A0
.35 CMP.L #PCH_CHECKDISK,(A0)+
BEQ.S .36
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .37
BRA.S .35
.36 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .37
MOVE.L (A0,D0.L),A0
MOVEM.L D2-D7/A2-A6,-(A7)
JSR (A0)
MOVEM.L (A7)+,D2-D7/A2-A6
TST.L D0
BNE.W .ERRINPARM
.37
CLR.B FILENAMEGIVEN(A5)
MOVE.L PARAMTABBASE(PC),A0
.22 CMP.L #PCH_FILENAME,(A0)+
BEQ.S .23
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .24
BRA.S .22
.23 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.W .24
MOVE.L (A0,D0.L),A0
MOVE.L STRFILNAME(PC),A1
.25 MOVE.B (A0)+,(A1)+
BNE.S .25
ST.B FILENAMEGIVEN(A5)
.24
MOVE.L PARAMTABBASE(PC),A0
.38 CMP.L #PCH_SPECIAL,(A0)+
BEQ.S .39
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .40
BRA.S .38
.39 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.W .40
MOVE.L (A0,D0.L),A2
MOVE.L PARAMTABBASE(PC),A0
.41 CMP.L #PCH_DATALENGTH,(A0)+
BEQ.S .42
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .ERRINSTRUCT
BRA.S .41
.42 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.W .ERRINSTRUCT
MOVE.L (A0,D0.L),D0
MOVE.L D0,FILSIZE(A5)
ADDQ.L #7,D0
AND.L #$FFFFFFF8,D0
MOVE.L #MEMF_CLEAR,D1
MOVE.L (_SYSBASE).W,A6
JSR _LVOALLOCMEM(A6)
TST.L D0
BEQ.W .ERRINPARM
MOVE.L D0,FILEMEMADR(A5)
MOVEM.L D2-D7/A2-A6,-(A7)
JSR (A2)
MOVEM.L (A7)+,D2-D7/A2-A6
TST.L D0
BNE.W .ERRINPARM
MOVE.L PARAMTABBASE(PC),A0
.43 CMP.L #PCH_STATE2,(A0)+
BEQ.S .44
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .45
BRA.S .43
.44 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.W .45
MOVE.L (A0,D0.L),A0
MOVE.L A0,-(A7)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #0,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #26,D0
MOVE.L #114,D1
MOVE.L #448,D2
MOVE.L #134,D3
MOVE.L GRABASE(PC),A6
JSR _LVORECTFILL(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVEQ.L #1,D0
MOVE.L GRABASE(PC),A6
JSR _LVOSETAPEN(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #121,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L (A7)+,A1
MOVE.L A1,A0
BRA.S .46
.47 ADDQ.L #1,A1
.46 MOVE.B (A1),D0
BEQ.S .48
CMP.B #$A,D0
BNE.S .47
MOVE.L A1,D0
SUB.L A0,D0
MOVE.L A1,A4
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #131,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
ADDQ.L #1,A4
MOVE.L A4,A0
MOVE.L A0,A1
BRA.S .49
.50 ADDQ.L #1,A1
.49 MOVE.B (A1),D0
BEQ.S .48
CMP.B #$A,D0
BNE.S .50
.48 MOVE.L A1,D0
SUB.L A0,D0
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
.45
MOVE.L PARAMTABBASE(PC),A0
.51 CMP.L #PCH_PROCESSING,(A0)+
BEQ.S .52
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .53
BRA.S .51
.52 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .53
MOVE.L (A0,D0.L),A0
MOVEM.L D2-D7/A2-A6,-(A7)
JSR (A0)
MOVEM.L (A7)+,D2-D7/A2-A6
TST.L D0
BNE.W .ERRINPARM
.53
MOVE.L PARAMTABBASE(PC),A0
.54 CMP.L #PCH_CHANGES,(A0)+
BEQ.S .55
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .56
BRA.S .54
.55 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .56
MOVE.L (A0,D0.L),A1
BSR.W MODIFY
TST.L D0
BNE.W .ERRINPARM
.56
MOVE.L PARAMTABBASE(PC),A0
.D29 CMP.L #PCH_SAVEPGM,(A0)+
BEQ.S .D30
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .D31
BRA.S .D29
.D30 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .D31
MOVE.L (A0,D0.L),A0
MOVEM.L D2-D7/A2-A6,-(A7)
JSR (A0)
MOVEM.L (A7)+,D2-D7/A2-A6
TST.L D0
BNE.W .ERRINPARM
.D31
BRA.W .33
.40
;CHECK IF BOOTBLOCK IS TO WRITE
MOVE.L PARAMTABBASE(PC),A0
.59 CMP.L #PCH_BOOTBLOCK,(A0)+
BEQ.S .60
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .61
BRA.S .59
.60 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.W .61
MOVE.L (A0,D0.L),A2
.62
LEA.L LOCKDISK(PC),A1
MOVE.L A1,D1
MOVE.L #MODE_READWRITE,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOLOCK(A6)
TST.L D0
BEQ.W .ERRINPARM
MOVE.L D0,D5
MOVE.L D0,D1
MOVE.L #INFODAT,D2
JSR _LVOINFO(A6)
TST.L D0
BEQ.W .ERRINPARM
;OPEN DEVICE
;UNITNUMBER IS IN ID_UNITNUMBER OF INFODAT
SUB.L A4,A4
MOVE.L DOSBAS(PC),D0
MOVE.L DL_ROOT(A4,D0.L),D0
MOVE.L RN_INFO(A4,D0.L),D0
LSL.L #2,D0
MOVE.L DI_DEVINFO(A4,D0.L),D0
LSL.L #2,D0
MOVE.L D0,D4
BRA.S .B1
.B2 MOVE.L DN_NEXT(A4,D0.L),D0
BEQ.W .ERRINPARM
LSL.L #2,D0
.B1 MOVE.L DN_TYPE(A4,D0.L),D1
CMP.L #2,D1
BNE.S .B2
MOVE.L DN_NAME(A4,D0.L),D1
LSL.L #2,D1
ADDQ.L #1,D1
MOVE.L D1,A1
LEA.L LOCKDISK(PC),A0
.B3 CMPM.B (A0)+,(A1)+
BEQ.S .B3
CMP.B #':',-1(A0)
BNE.S .B1
TST.B -1(A1)
BNE.S .B1
MOVE.L DN_TASK(A4,D0.L),D0
EXG.L D0,D4
BRA.S .B4
.B5 MOVE.L DN_NEXT(A4,D0.L),D0
BEQ.W .ERRINPARM
LSL.L #2,D0
.B4 MOVE.L DN_TYPE(A4,D0.L),D1
CMP.L #0,D1
BNE.S .B5
CMP.L DN_TASK(A4,D0.L),D4
BNE.S .B5
MOVE.L DN_STARTUP(A4,D0.L),D0
LSL.L #2,D0
MOVE.L FSSM_DEVICE(A4,D0.L),D1
LSL.L #2,D1
ADDQ.L #1,D1
MOVE.L D1,A0
MOVE.L BOOTIORQ(PC),A1
MOVE.L FSSM_UNIT(A4,D0.L),D0
MOVEQ.L #0,D1
MOVE.L 4.W,A6
JSR _LVOOPENDEVICE(A6)
TST.L D0
BNE.W .ERRINPARM
MOVE.L BOOTIORQ(PC),A1
MOVE.W #CMD_WRITE,IO_COMMAND(A1)
MOVE.L A2,IO_DATA(A1)
MOVE.L #$400,IO_LENGTH(A1)
MOVE.L #$0,IO_OFFSET(A1)
JSR _LVODOIO(A6)
MOVE.L D0,-(A7)
MOVE.L BOOTIORQ(PC),A1
JSR _LVOCLOSEDEVICE(A6)
MOVE.L D5,D1
MOVE.L DOSBAS(PC),A6
JSR _LVOUNLOCK(A6)
CLR.L PARAMLOCK
MOVE.L (A7)+,D0
TST.L D0
BNE.W .ERRINPARM
BRA.W .6
.61
MOVE.L PARAMTABBASE(PC),A0
.64 CMP.L #PCH_SAVEDATA,(A0)+
BEQ.S .63
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .70
BRA.S .64
.63 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.W .70
MOVE.L (A0,D0.L),A2
MOVE.L PARAMTABBASE(PC),A0
.65 CMP.L #PCH_DATALENGTH,(A0)+
BEQ.S .66
ADDQ.L #4,A0
TST.L (A0)
BEQ.W .ERRINSTRUCT
BRA.S .65
.66 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.W .ERRINSTRUCT
MOVE.L (A0,D0.L),A3
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #121,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L PARAMTABBASE(PC),A0
.S43 CMP.L #PCH_STATE2,(A0)+
BEQ.S .S44
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .S45
BRA.S .S43
.S44 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .S45
MOVE.L (A0,D0.L),A0
MOVE.L A0,A1
BRA.S .S46
.S47 ADDQ.L #1,A1
.S46 MOVE.B (A1),D0
BEQ.S .S48
CMP.B #$A,D0
BNE.S .S47
MOVE.L A1,D0
SUB.L A0,D0
MOVE.L A1,A4
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #131,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
ADDQ.L #1,A4
MOVE.L A4,A0
MOVE.L A0,A1
BRA.S .S49
.S50 ADDQ.L #1,A1
.S49 MOVE.B (A1),D0
BEQ.S .S48
CMP.B #$A,D0
BNE.S .S50
.S48 MOVE.L A1,D0
SUB.L A0,D0
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
.S45
TST.B FILENAMEGIVEN
BEQ.W .ERRINSTRUCT
LEA.L FILNAME(PC),A1
MOVE.L A1,D1
MOVE.L #MODE_NEWFILE,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOOPEN(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,FILHANDLE
MOVE.L FILHANDLE(PC),D1
MOVE.L A2,D2
MOVE.L A3,D3
MOVE.L DOSBAS(PC),A6
JSR _LVOWRITE(A6)
TST.L D0
BMI.W ERR
BEQ.W ERR
MOVE.L FILHANDLE(PC),D1
MOVE.L DOSBAS(PC),A6
JSR _LVOCLOSE(A6)
CLR.L FILHANDLE
BRA.W .6
.70
;MANUELLE DISKBEARBEITUNG
LEA.L FILNAME(PC),A1
MOVE.L A1,D1
MOVE.L #MODE_READWRITE,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOLOCK(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,PARAMLOCK
MOVE.L PARAMLOCK(PC),D1
MOVE.L #PARAMINFO,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOEXAMINE(A6)
TST.L D0
BEQ.W ERR
MOVE.L PARAMLOCK(PC),D1
MOVE.L DOSBAS(PC),A6
JSR _LVOUNLOCK(A6)
CLR.L PARAMLOCK
MOVEQ.L #0,D5
MOVEQ.L #0,D4
MOVE.L PARAMTABBASE(PC),A0
.26 CMP.L #PCH_LOADOFFSET,(A0)+
BEQ.S .28
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .27
BRA.S .26
.28 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
MOVE.L (A0,D0.L),D5
.27
MOVE.L PARAMTABBASE(PC),A0
.O26 CMP.L #PCH_APPENDSPACE,(A0)+
BEQ.S .O28
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .O27
BRA.S .O26
.O28 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
MOVE.L (A0,D0.L),D4
.O27
LEA.L PARAMINFO,A0
MOVE.L FIB_SIZE(A0),D3
ADD.L D5,D3
ADD.L D4,D3
MOVE.L PARAMTABBASE(PC),A0
.O6 CMP.L #PCH_DATALENGTH,(A0)+
BEQ.S .O8
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .O7
BRA.S .O6
.O8 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .O7
CMP.L (A0,D0.L),D3
BNE.W .ERRINLENGTH
.O7
MOVE.L D3,FILSIZE(A5)
MOVE.L D3,D0
ADDQ.L #7,D0
AND.L #$FFFFFFF8,D0
MOVE.L #MEMF_CLEAR,D1
MOVE.L (_SYSBASE).W,A6
JSR _LVOALLOCMEM(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,FILEMEMADR(A5)
LEA.L FILNAME(PC),A1
MOVE.L A1,D1
MOVE.L #MODE_OLDFILE,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOOPEN(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,FILHANDLE
MOVE.L FILHANDLE(PC),D1
MOVE.L FILEMEMADR(PC),D2
ADD.L D5,D2
LEA.L PARAMINFO,A0
MOVE.L FIB_SIZE(A0),D3
MOVE.L DOSBAS(PC),A6
JSR _LVOREAD(A6)
TST.L D0
BMI.W ERR
BEQ.W ERR
MOVE.L FILHANDLE(PC),D1
MOVE.L DOSBAS(PC),A6
JSR _LVOCLOSE(A6)
CLR.L FILHANDLE
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #121,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
MOVE.L PARAMTABBASE(PC),A0
.O43 CMP.L #PCH_STATE2,(A0)+
BEQ.S .O44
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .O45
BRA.S .O43
.O44 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .O45
MOVE.L (A0,D0.L),A0
MOVE.L A0,A1
BRA.S .O46
.O47 ADDQ.L #1,A1
.O46 MOVE.B (A1),D0
BEQ.S .O48
CMP.B #$A,D0
BNE.S .O47
MOVE.L A1,D0
SUB.L A0,D0
MOVE.L A1,A4
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L #28,D0
MOVE.L #131,D1
MOVE.L GRABASE(PC),A6
JSR _LVOMOVE(A6)
ADDQ.L #1,A4
MOVE.L A4,A0
MOVE.L A0,A1
BRA.S .O49
.O50 ADDQ.L #1,A1
.O49 MOVE.B (A1),D0
BEQ.S .O48
CMP.B #$A,D0
BNE.S .O50
.O48 MOVE.L A1,D0
SUB.L A0,D0
MOVE.L WIN1RASTPORT(PC),A1
MOVE.L GRABASE(PC),A6
JSR _LVOTEXT(A6)
.O45
MOVE.L PARAMTABBASE(PC),A0
.29 CMP.L #PCH_PROCESSING,(A0)+
BEQ.S .30
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .31
BRA.S .29
.30 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .31
MOVE.L (A0,D0.L),A0
MOVEM.L D2-D7/A2-A6,-(A7)
JSR (A0)
MOVEM.L (A7)+,D2-D7/A2-A6
TST.L D0
BNE.W .ERRINPARM
.31
MOVE.L PARAMTABBASE(PC),A0
.32 CMP.L #PCH_CHANGES,(A0)+
BEQ.S .34
ADDQ.L #4,A0
TST.L (A0)
BEQ.S .33
BRA.S .32
.34 MOVE.L (A0),A0
MOVE.L D6,D0
LSL.L #2,D0
TST.L (A0,D0.L)
BEQ.S .33
MOVE.L (A0,D0.L),A1
BSR.W MODIFY
TST.L D0
BNE.W .ERRINPARM
.33
TST.B FILENAMEGIVEN
BEQ.S .58
LEA.L FILNAME(PC),A1
MOVE.L A1,D1
MOVE.L #MODE_NEWFILE,D2
MOVE.L DOSBAS(PC),A6
JSR _LVOOPEN(A6)
TST.L D0
BEQ.W ERR
MOVE.L D0,FILHANDLE
MOVE.L FILHANDLE(PC),D1
MOVE.L FILEMEMADR(PC),D2
MOVE.L FILSIZE(PC),D3
MOVE.L DOSBAS(PC),A6
JSR _LVOWRITE(A6)
TST.L D0
BMI.W ERR
BEQ.W ERR
MOVE.L FILHANDLE(PC),D1
MOVE.L DOSBAS(PC),A6
JSR _LVOCLOSE(A6)
CLR.L FILHANDLE
.58 MOVE.L FILEMEMADR(PC),A1
MOVE.L FILSIZE(PC),D0
ADDQ.L #7,D0
AND.L #$FFFFFFF8,D0
MOVE.L (_SYSBASE).W,A6
JSR _LVOFREEMEM(A6)
CLR.L FILEMEMADR(A5)
CLR.L FILSIZE(A5)
BRA.W .6
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FORMATDEST
TST.L D0
BEQ.S .Y
.ERR2 MOVEQ.L #-1,D0
RTS
.Y MOVEM.L D2-D7/A2-A6,-(A7)
LEA.L DOSBAS(PC),A5
LEA.L ROOTBL+108*4+1(PC),A1
MOVEQ.L #-1,D1
.2 CMP.B #30,D1
BEQ.S .1
ADDQ.B #1,D1
MOVE.B (A0)+,(A1)+
BNE.S .2
.1 MOVE.B D1,ROOTBL+108*4
CLR.L ROOTBL+$5*4
LEA.L ROOTBL(PC),A1
MOVEQ.L #0,D1
MOVEQ.L #$200/4-1,D0
.3 ADD.L (A1)+,D1
DBF D0,.3
NEG.L D1
MOVE.L D1,ROOTBL+5*4
MOVE.L #DESTDEVICE,D1
MOVE.L DOSBAS(PC),A6
JSR _LVODEVICEPROC(A6)
TST.L D0
BEQ.S .ERR2
MOVE.L D0,A3
MOVE.L DOSPACKETS(PC),A1
LEA.L $14(A1),A0
MOVE.L A0,LN_NAME(A1)
MOVE.L A1,$14+DP_LINK(A1)
MOVE.L MYPORT(PC),$14+DP_PORT(A1)
MOVE.L #$1F,$14+DP_TYPE(A1)
MOVE.L #-1,$14+DP_ARG1(A1)
MOVE.L A3,A0
MOVE.L (_SYSBASE).W,A6
JSR _LVOPUTMSG(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOWAITPORT(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOGETMSG(A6)
;MESSAGE+DOSPACKET-STRUKTUR EINRICHTEN
LEA.L FORMATQUEST(PC),A0
LEA.L FORMATQUEST2(PC),A1
BSR.W ASKREQUEST
TST.L D0
BEQ.S .4
.ERR MOVE.L DOSPACKETS(PC),A1
LEA.L $14(A1),A0
MOVE.L A0,LN_NAME(A1)
MOVE.L A1,$14+DP_LINK(A1)
MOVE.L MYPORT(PC),$14+DP_PORT(A1)
MOVE.L #$1F,$14+DP_TYPE(A1)
MOVE.L #0,$14+DP_ARG1(A1)
MOVE.L A3,A0
MOVE.L (_SYSBASE).W,A6
JSR _LVOPUTMSG(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOWAITPORT(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOGETMSG(A6)
MOVEM.L (A7)+,D2-D7/A2-A6
MOVEQ.L #-1,D0
RTS
.4
MOVEQ.L #0,D7
MOVE.L DOSBAS+PTB_DEVICEDESTPTR(A5),A1
MOVE.W #TD_CHANGESTATE,IO_COMMAND(A1)
MOVE.L (_SYSBASE).W,A6
JSR _LVODOIO(A6)
TST.L IO_ACTUAL(A1)
BNE.S .ERR
MOVE.W #$1600/4-1,D0
MOVE.L DOSBAS+PTB_SPACE(A5),A0
.7 CLR.L (A0)+
;.7 MOVE.L #$AA,(A0)+
DBF D0,.7
; MOVE.L DOSBAS+PTB_SPACE(A5),A0
; MOVE.L A0,(A0)
MOVE.L #$0,D2
.8 MOVEQ.L #$4,D6
.55 MOVE.L DOSBAS+PTB_DEVICEDESTPTR(A5),A1
MOVE.L DOSBAS+PTB_SPACE(A5),IO_DATA(A1)
MOVE.L #$1600,IO_LENGTH(A1)
MOVE.L D2,IO_OFFSET(A1)
MOVE.W #TD_FORMAT,IO_COMMAND(A1)
MOVE.L (_SYSBASE).W,A6
JSR _LVODOIO(A6)
TST.L D0
BEQ.S .R1OK
DBF D6,.55
BRA.W .ERR
.R1OK ADD.L #$1600,D2
CMP.L #$A0*$1600,D2
BNE.S .8
MOVEQ.L #$4,D6
.REP MOVE.L DOSBAS+PTB_DEVICEDESTPTR(A5),A1
MOVE.L #ROOTBL,IO_DATA(A1)
MOVE.L #$400,IO_LENGTH(A1)
MOVE.L #$370*$200,IO_OFFSET(A1)
MOVE.W #CMD_WRITE,IO_COMMAND(A1)
MOVE.L (_SYSBASE).W,A6
JSR _LVODOIO(A6)
TST.L D0
BEQ.S .R2OK
DBF D6,.REP
BRA.W .ERR
.R2OK
MOVEQ.L #BOOTEND-BOOTBL-1,D0
LEA.L BOOTBL(PC),A0
MOVE.L DOSBAS+PTB_SPACE(A5),A1
.9 MOVE.B (A0)+,(A1)+
DBF D0,.9
MOVEQ.L #$4,D6
.REP2 MOVE.L DOSBAS+PTB_DEVICEDESTPTR(A5),A1
MOVE.L DOSBAS+PTB_SPACE(A5),IO_DATA(A1)
MOVE.L #$400,IO_LENGTH(A1)
MOVE.L #$0*$200,IO_OFFSET(A1)
MOVE.W #CMD_WRITE,IO_COMMAND(A1)
MOVE.L (_SYSBASE).W,A6
JSR _LVODOIO(A6)
TST.L D0
BEQ.S .R3OK
DBF D6,.REP2
BRA.W .ERR
.R3OK
MOVE.L DOSBAS+PTB_DEVICEDESTPTR(A5),A1
MOVE.W #CMD_UPDATE,IO_COMMAND(A1)
MOVE.L (_SYSBASE).W,A6
JSR _LVODOIO(A6)
TST.L D0
BEQ.S .R4OK
BRA.W .ERR
.R4OK MOVE.L DOSBAS+PTB_DEVICESOURCEPTR(A5),A1
MOVE.L #0,IO_LENGTH(A1)
MOVE.W #TD_MOTOR,IO_COMMAND(A1)
MOVE.L (_SYSBASE).W,A6
JSR _LVODOIO(A6)
MOVE.L DOSPACKETS(PC),A1
LEA.L $14(A1),A0
MOVE.L A0,LN_NAME(A1)
MOVE.L A1,$14+DP_LINK(A1)
MOVE.L MYPORT(PC),$14+DP_PORT(A1)
MOVE.L #$1F,$14+DP_TYPE(A1)
MOVE.L #0,$14+DP_ARG1(A1)
MOVE.L A3,A0
MOVE.L (_SYSBASE).W,A6
JSR _LVOPUTMSG(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOWAITPORT(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOGETMSG(A6)
MOVEM.L (A7)+,D2-D7/A2-A6
MOVEQ.L #0,D0
RTS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ASKREQUEST
MOVE.L A0,ASKING
MOVE.L A1,ASKING2
MOVEM.L D2/D3/A2/A3,-(A7)
SUBA.L A0,A0
LEA.L BODYTEXT(PC),A1
LEA.L LEFTTEXT(PC),A2
LEA.L RIGHTTEXT(PC),A3
MOVEQ #0,D0
MOVEQ #0,D1
MOVE.W #300,D2
MOVEQ #60,D3
MOVE.L INTUIBASE(PC),A6
JSR _LVOAUTOREQUEST(A6)
MOVEM.L (A7)+,D2/D3/A2/A3
TST.L D0
BEQ.S .1
;.OK
MOVEQ.L #0,D0
RTS
;.CANCEL
.1 MOVEQ.L #-1,D0
RTS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
INHIBITDRIVE
MOVEM.L D1-A6,-(A7)
CMP.L #0,D0
BNE.S .1
LEA.L SRCDEVICE(PC),A2
BRA.S .3
.1 CMP.L #1,D0
BNE.S .2
LEA.L DESTDEVICE(PC),A2
BRA.S .3
.ERR
.2 ST.B D0
MOVEM.L (A7)+,D1-A6
RTS
.3 MOVE.L A2,D1
MOVE.L DOSBAS(PC),A6
JSR _LVODEVICEPROC(A6)
TST.L D0
BEQ.S .ERR
MOVE.L D0,A3
MOVE.L DOSPACKETS(PC),A1
LEA.L $14(A1),A0
MOVE.L A0,LN_NAME(A1)
MOVE.L A1,$14+DP_LINK(A1)
MOVE.L MYPORT(PC),$14+DP_PORT(A1)
MOVE.L #$1F,$14+DP_TYPE(A1)
MOVE.L #-1,$14+DP_ARG1(A1)
MOVE.L A3,A0
MOVE.L (_SYSBASE).W,A6
JSR _LVOPUTMSG(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOWAITPORT(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOGETMSG(A6)
MOVEQ.L #0,D0
MOVEM.L (A7)+,D1-A6
RTS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ENABLEDRIVE
MOVEM.L D1-A6,-(A7)
CMP.L #0,D0
BNE.S .1
LEA.L SRCDEVICE(PC),A2
BRA.S .3
.1 CMP.L #1,D0
BNE.S .2
LEA.L DESTDEVICE(PC),A2
BRA.S .3
.ERR
.2 ST.B D0
MOVEM.L (A7)+,D1-A6
RTS
.3 MOVE.L A2,D1
MOVE.L DOSBAS(PC),A6
JSR _LVODEVICEPROC(A6)
TST.L D0
BEQ.S .ERR
MOVE.L D0,A3
MOVE.L DOSPACKETS(PC),A1
LEA.L $14(A1),A0
MOVE.L A0,LN_NAME(A1)
MOVE.L A1,$14+DP_LINK(A1)
MOVE.L MYPORT(PC),$14+DP_PORT(A1)
MOVE.L #$1F,$14+DP_TYPE(A1)
MOVE.L #0,$14+DP_ARG1(A1)
MOVE.L A3,A0
MOVE.L (_SYSBASE).W,A6
JSR _LVOPUTMSG(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOWAITPORT(A6)
MOVE.L MYPORT(PC),A0
JSR _LVOGETMSG(A6)
MOVEQ.L #0,D0
MOVEM.L (A7)+,D1-A6
RTS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
schlafen
move.l WINDOW1(PC),a0 ;Windowstruktur nach a0
move.l $56(a0),a0 ;UserPort holen
move.l a0,a3 ;retten
.3 move.l a3,a0 ;userPort holen
move.l (_SYSBASE).W,a6 ;execBase nach a6
jsr _LVOGETMSG(a6) ;Nachricht holen
move.l d0,a1 ;und sichern
TST.L D0
BNE.S .4
MOVE.L A3,A0
move.b $0f(a0),d1 ;Signalmaske holen
moveq #0,d0 ;d0 löschen
bset d1,d0 ;benötigte Signale setzen
move.l (_SYSBASE).W,A6 ;auf Nachricht
jsr _LVOWAIT(a6) ;warten
BRA.S .3
.4 move.l $14(a1),d4 ;diverse
move.W $12(a1),d5 ;Parameter
LEA.L $14(A1),A0
LEA.L MSGBUFFER+2(PC),A2
MOVE.W D5,MSGBUFFER
CMP.W #$20,D5
BLO.S .2
MOVE.L #$20,D5
.2 SUBQ.W #1,D5
.1 MOVE.B (A0)+,(A2)+
DBF D5,.1
move.l $1c(a1),a4 ;sichern
move.l (_SYSBASE).W,A6 ;execBase nach a6
jsr _LVOREPLYMSG(A6) ;Nachricht beantworten
rts
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
GETPARPTR LEA.L MEMORYBASE(PC),A3
BRA.S .3
.1 MOVE.L (A3),A3
CMP.L #0,A3
BEQ.S .5
.3 DBF D0,.1
MOVE.L 4(A3),A2
.2 CMP.L #PCH_NAME,(A2)+
BEQ.S .4
ADDQ.L #4,A2
BRA.S .2
.4 MOVE.L (A2),D0
RTS
.5 MOVE.L #TEXT1,D0
RTS
;---------------------------------------------------------------------------
;PROGRAM FOR MODIFYING
;DATAFORMAT OF COMPTAB SEE MAKECOMP
;IT USES THE REGISTERS A0,A1,A3 AND D0,D1
;/ A3 FILEBUFFER
;< A1 ^COMPTAB
;> D0 ERROR, IF SET
MODIFY MOVE.L FILEMEMADR(PC),A3
.3 MOVE.L (A1)+,D0
MOVE.L D0,D1
AND.L #$1FFFFF,D1
LEA.L (A3,D1.L),A0
AND.L #$E00000,D0 ;CAN DETECT ANY COMBINATION OF BITS $15 - $17
CMP.L #$400000,D0
BEQ.S .1
CMP.L #$800000,D0
BEQ.S .2
CMP.L #$0,D0
BNE.S .ERRMODIFY ;ILLEGAL SPECIAL VALUE - HERE NOT SUPPORTED
MOVE.B (A1),(A0)
BRA.S .3
.2 MOVEQ.L #0,D1
MOVE.B (A1)+,D1
SUBQ.L #1,D1
.4 MOVE.B (A1)+,(A0)+
DBF D1,.4
MOVE.L A1,D1
AND.L #$FFFFFFFE,D1
MOVE.L D1,A1
BRA.S .3
.1 CLR.L D0
RTS
.ERRMODIFY MOVEQ.L #-$1,D0
RTS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
EXAMCL
.1 CMP.B #$20,(A0)
BNE.S .2
ADDQ.L #1,A0
BRA.S .1
.2 CMP.B #$9,(A0)
BNE.S .3
ADDQ.L #1,A0
BRA.S .1
.3 CMP.B #$A,(A0)
BNE.S .4
RTS
.4 CMP.B #$0,(A0)
BNE.S .5
.6 RTS
.5 CMP.B #'-',(A0)
BNE.S .6
ADDQ.L #1,A0
CMP.B #'s',(A0)
BNE.S .7
ADDQ.L #1,A0
LEA.L SRCDEVICE(PC),A1
.10 MOVE.B (A0)+,(A1)+
CMP.B #$20,(A0)
BEQ.S .1
CMP.B #$9,(A0)
BEQ.S .1
CMP.B #$A,(A0)
BEQ.S .9
CMP.B #$0,(A0)
BNE.S .10
.9 RTS
.7 CMP.B #'d',(A0)
BNE.S .P1
ADDQ.L #1,A0
LEA.L DESTDEVICE(PC),A1
BRA.S .10
.p1 CMP.B #'p',(A0)
BNE.S .6
ADDQ.L #1,A0
ST EXEC1PARAM
LEA.L PARAMFILENAM(PC),A1
BRA.S .10
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ENDB A5
OPENDEV MOVEM.L D1-A6,-(A7)
CMP.L #0,D0
BNE.S .1
LEA.L SRCDEVICE(PC),A2
MOVE.L SOURCEIORQ(PC),A3
LEA.L DEVICESOURCEPTR(PC),A5
BRA.S .3
.1 CMP.L #1,D0
BNE.S .2
LEA.L DESTDEVICE(PC),A2
MOVE.L DESTIORQ(PC),A3
LEA.L DEVICEDESTPTR(PC),A5
BRA.S .3
.ERR
.2 ST.B D0
MOVEM.L (A7)+,D1-A6
RTS
.3 SUB.L A4,A4 ;A4 IS ZERO!
MOVE.L DOSBAS(PC),D0
MOVE.L DL_ROOT(A4,D0.L),D0
MOVE.L RN_INFO(A4,D0.L),D0
LSL.L #2,D0
MOVE.L DI_DEVINFO(A4,D0.L),D0
LSL.L #2,D0
MOVE.L D0,D4
BRA.S .6
.5 MOVE.L DN_NEXT(A4,D0.L),D0
BEQ.S .ERR
LSL.L #2,D0
.6 MOVE.L DN_TYPE(A4,D0.L),D1
CMP.L #0,D1
BNE.S .5
MOVE.L DN_NAME(A4,D0.L),D1
LSL.L #2,D1
ADDQ.L #1,D1
MOVE.L D1,A1
MOVE.L A2,A0
.7 MOVE.B (A0)+,D2
MOVE.B (A1)+,D3
CMP.B #$61,D2
BLO.S .S1
CMP.B #$7A,D2
BHI.S .S1
AND.B #%11011111,D2
.S1 CMP.B #$61,D3
BLO.S .S2
CMP.B #$7A,D3
BHI.S .S2
AND.B #%11011111,D3
.S2 CMP.B D2,D3
BEQ.S .7
CMP.B #':',-1(A0)
BNE.S .5
TST.B -1(A1)
BNE.S .5
MOVE.L DN_STARTUP(A4,D0.L),D0
LSL.L #2,D0
MOVE.L D0,(FSSMSOURCEPTR-DEVICESOURCEPTR)(A5)
MOVE.L FSSM_DEVICE(A4,D0.L),D1
LSL.L #2,D1
ADDQ.L #1,D1
MOVE.L D1,A0
MOVE.L FSSM_UNIT(A4,D0.L),D0
MOVE.L A3,A1
MOVEQ.L #0,D1
MOVE.L 4.W,A6
JSR _LVOOPENDEVICE(A6)
TST.L D0
BNE.S .4
MOVE.L A3,(A5)
.4 MOVEM.L (A7)+,D1-A6
RTS
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
CRCEVAL movem.l d2/d5/d7/A1,-(a7)
move.l d0,d7
moveq #0,d0
lea .CRC16table(pc),a1 ;CRC16 table for speed up
move.w #$ff,d1
moveq #0,d2
.loop move.b (a0)+,d2 ;take a byte
eor.w d2,d0
move.w d0,d5
and.w d1,d0
add.w d0,d0
move.w (a1,d0.w),d0
lsr.w #8,d5
eor.w d5,d0
subq.l #1,d7
bne .loop
movem.l (a7)+,d2/d5/d7/A1
rts
.CRC16table:
dc.w $0000,$c0c1,$c181,$0140,$c301,$03c0,$0280,$c241
dc.w $c601,$06c0,$0780,$c741,$0500,$c5c1,$c481,$0440
dc.w $cc01,$0cc0,$0d80,$cd41,$0f00,$cfc1,$ce81,$0e40
dc.w $0a00,$cac1,$cb81,$0b40,$c901,$09c0,$0880,$c841
dc.w $d801,$18c0,$1980,$d941,$1b00,$dbc1,$da81,$1a40
dc.w $1e00,$dec1,$df81,$1f40,$dd01,$1dc0,$1c80,$dc41
dc.w $1400,$d4c1,$d581,$1540,$d701,$17c0,$1680,$d641
dc.w $d201,$12c0,$1380,$d341,$1100,$d1c1,$d081,$1040
dc.w $f001,$30c0,$3180,$f141,$3300,$f3c1,$f281,$3240
dc.w $3600,$f6c1,$f781,$3740,$f501,$35c0,$3480,$f441
dc.w $3c00,$fcc1,$fd81,$3d40,$ff01,$3fc0,$3e80,$fe41
dc.w $fa01,$3ac0,$3b80,$fb41,$3900,$f9c1,$f881,$3840
dc.w $2800,$e8c1,$e981,$2940,$eb01,$2bc0,$2a80,$ea41
dc.w $ee01,$2ec0,$2f80,$ef41,$2d00,$edc1,$ec81,$2c40
dc.w $e401,$24c0,$2580,$e541,$2700,$e7c1,$e681,$2640
dc.w $2200,$e2c1,$e381,$2340,$e101,$21c0,$2080,$e041
dc.w $a001,$60c0,$6180,$a141,$6300,$a3c1,$a281,$6240
dc.w $6600,$a6c1,$a781,$6740,$a501,$65c0,$6480,$a441
dc.w $6c00,$acc1,$ad81,$6d40,$af01,$6fc0,$6e80,$ae41
dc.w $aa01,$6ac0,$6b80,$ab41,$6900,$a9c1,$a881,$6840
dc.w $7800,$b8c1,$b981,$7940,$bb01,$7bc0,$7a80,$ba41
dc.w $be01,$7ec0,$7f80,$bf41,$7d00,$bdc1,$bc81,$7c40
dc.w $b401,$74c0,$7580,$b541,$7700,$b7c1,$b681,$7640
dc.w $7200,$b2c1,$b381,$7340,$b101,$71c0,$7080,$b041
dc.w $5000,$90c1,$9181,$5140,$9301,$53c0,$5280,$9241
dc.w $9601,$56c0,$5780,$9741,$5500,$95c1,$9481,$5440
dc.w $9c01,$5cc0,$5d80,$9d41,$5f00,$9fc1,$9e81,$5e40
dc.w $5a00,$9ac1,$9b81,$5b40,$9901,$59c0,$5880,$9841
dc.w $8801,$48c0,$4980,$8941,$4b00,$8bc1,$8a81,$4a40
dc.w $4e00,$8ec1,$8f81,$4f40,$8d01,$4dc0,$4c80,$8c41
dc.w $4400,$84c1,$8581,$4540,$8701,$47c0,$4680,$8641
dc.w $8201,$42c0,$4380,$8341,$4100,$81c1,$8081,$4040
*******************************************************************************
OPERFINI DC.B 'Operation finished.'
OPERFINIEND DC.B 0
EVEN
INSCOPY DC.B 'Please insert a copy of your disk'
INSCOPYEND DC.B 0
EVEN
WAITPROC DC.B 'and wait for processing.'
WAITPROCEND DC.B 0
EVEN
READY DC.B 'Ready to start.'
READYEND DC.B 0
EVEN
WRITTEN DC.B 'Written by Egon and Harry.'
WRITTENEND DC.B 0
EVEN
NOSELECT DC.B 'No parameter selected.'
NOSELECTEND DC.B 0
EVEN
NOSELECT2 DC.B '!!! NO PARAMETER SELECTED, GUY !!!'
NOSELECT2END DC.B 0
EVEN
ERRORINPARM DC.B 'Error in parameter execution.'
ERRORINPARMEND DC.B 0
EVEN
ERRORINSTRUCT DC.B 'Error in parameter structure.'
ERRORINSTRUCTEND DC.B 0
EVEN
ERRORLENGTH DC.B 'Wrong file length.'
ERRORLENGTHEND DC.B 0
EVEN
ERRORGAME DC.B 'Possibly another game version.'
ERRORGAMEEND DC.B 0
EVEN
WELCOME DC.B 'Welcome to THE PATCHER!'
WELCOMEEND DC.B 0
EVEN
FORMATQUEST DC.B 'Shall I format that disk in the',0
FORMATQUEST2 DC.B 'destination drive?',0
FILENAM DC.B 'PARAMETER/'
BUFFILNAM DS.B $68
EVEN
LOCKNAM DC.B 'PARAMETER',0
EVEN
MSGBUFFER DS.B $22
FILNAME DS.B $100
LOCKDISK DS.B $100
RUBY_FNT DC.L RUBYNAME ;FONTNAME
DC.W 8 ;HÖHE
DC.B $0 ;STYLE
DC.B $2+8 ;FLAGS
DC.W 0
RUBYNAME DC.B 'ruby.font',0
EVEN
Window1Daten dc.w 0 ;leftEdge
dc.w 0 ;topEdge
dc.w 480 ;width
dc.w 180 ;height
dc.b 0 ;detailPen
dc.b 1 ;blockPen
dc.l ICDMPFL ;idcmpFlags
dc.l Flaggen ;flags
dc.l PTCHGADGET ;firstGadget
dc.l 0 ;checkMark
dc.l WINDOWTITEL ;title
dc.l 0
dc.l 0 ;bitMap
dc.w 500 ;minWidth
dc.w 180+2 ;minHeight
dc.w 500 ;maxWidth
dc.w 180+2 ;maxHeight
dc.w WBENCHSCREEN ;type
WindowTitel: dc.b "THE PATCHER V1.04",0
EVEN
PTCHGADGET DC.L ARROWUP ;NEXTGADGET
DC.W 25 ;LEFTEDGE
DC.W 150-6+2 ;TOPEDGE
DC.W 65 ;WIDTH
DC.W 13 ;HEIGHT
DC.W GADGHIMAGE!GADGIMAGE ;TYPE
DC.W RELVERIFY ;!BOOLEXTEND ;ACTIVATION
DC.W BOOLGADGET ;GADGETTYPE
DC.L PTCHMASKI ;GADGETRENDER
DC.L PTCHMASKA ;SELECTRENDER
DC.L 0 ;GADGETTEXT
DC.L 0 ;MUTUALEXCLUDE
DC.L 0 ;SPECIALINFO
DC.W 0 ;NUMMER DES GADGETS
DC.L 0 ;USERDATA
PTCHMASKI DC.W 0 ;LEFTEDGE RELATIV
DC.W 0 ;TOPEDGE RELATIV
DC.W 65 ;WIDTH
DC.W 13 ;HEIGTH
DC.W 2 ;DEPTH
DC.L PTCHIIM ;IMAGEDATA
DC.B %11 ;PLANEPICK
DC.B 0 ;PLANEONOFF
DC.L 0 ;NEXTIMAGE
PTCHMASKA DC.W 0 ;LEFTEDGE RELATIV
DC.W 0 ;TOPEDGE RELATIV
DC.W 65 ;WIDTH
DC.W 13 ;HEIGTH
DC.W 2 ;DEPTH
DC.L PTCHAIM ;IMAGEDATA
DC.B %11 ;PLANEPICK
DC.B 0 ;PLANEONOFF
DC.L 0 ;NEXTIMAGE
ARROWUP DC.L ARROWDOWN ;NEXTGADGET
DC.W 405+26 ;LEFTEDGE
DC.W 8 ;TOPEDGE
DC.W 19 ;WIDTH
DC.W 11 ;HEIGHT
AUFLAGS DC.W GADGHIMAGE!GADGIMAGE!GADGDISABLED ;TYPE
DC.W RELVERIFY ;!BOOLEXTEND ;ACTIVATION
DC.W BOOLGADGET ;GADGETTYPE
DC.L ARROWUPMASKI ;GADGETRENDER
DC.L ARROWUPMASKA ;SELECTRENDER
DC.L 0 ;GADGETTEXT
DC.L 0 ;MUTUALEXCLUDE
DC.L 0 ;SPECIALINFO
DC.W 0 ;NUMMER DES GADGETS
DC.L 0 ;USERDATA
ARROWUPMASKI DC.W 0 ;LEFTEDGE RELATIV
DC.W 0 ;TOPEDGE RELATIV
DC.W 19 ;WIDTH
DC.W 11 ;HEIGTH
DC.W 2 ;DEPTH
DC.L AUPIIM ;IMAGEDATA
DC.B %11 ;PLANEPICK
DC.B 0 ;PLANEONOFF
DC.L 0 ;NEXTIMAGE
ARROWUPMASKA DC.W 0 ;LEFTEDGE RELATIV
DC.W 0 ;TOPEDGE RELATIV
DC.W 19 ;WIDTH
DC.W 11 ;HEIGTH
DC.W 2 ;DEPTH
DC.L AUPAIM ;IMAGEDATA
DC.B %11 ;PLANEPICK
DC.B 0 ;PLANEONOFF
DC.L 0 ;NEXTIMAGE
ARROWDOWN DC.L PROPGADGET1 ;NEXTGADGET
DC.W 405+26 ;LEFTEDGE
DC.W 51 ;TOPEDGE
DC.W 19 ;WIDTH
DC.W 11 ;HEIGHT
ADFLAGS DC.W GADGHIMAGE!GADGIMAGE!GADGDISABLED ;TYPE
DC.W RELVERIFY ;!BOOLEXTEND ;ACTIVATION
DC.W BOOLGADGET ;GADGETTYPE
DC.L ARROWDOWNMASKI ;GADGETRENDER
DC.L ARROWDOWNMASKA ;SELECTRENDER
DC.L 0 ;GADGETTEXT
DC.L 0 ;MUTUALEXCLUDE
DC.L 0 ;SPECIALINFO
DC.W 0 ;NUMMER DES GADGETS
DC.L 0 ;USERDATA
ARROWDOWNMASKI DC.W 0 ;LEFTEDGE RELATIV
DC.W 0 ;TOPEDGE RELATIV
DC.W 19 ;WIDTH
DC.W 11 ;HEIGTH
DC.W 2 ;DEPTH
DC.L ADOWNIIM ;IMAGEDATA
DC.B %11 ;PLANEPICK
DC.B 0 ;PLANEONOFF
DC.L 0 ;NEXTIMAGE
ARROWDOWNMASKA DC.W 0 ;LEFTEDGE RELATIV
DC.W 0 ;TOPEDGE RELATIV
DC.W 19 ;WIDTH
DC.W 11 ;HEIGTH
DC.W 2 ;DEPTH
DC.L ADOWNAIM ;IMAGEDATA
DC.B %11 ;PLANEPICK
DC.B 0 ;PLANEONOFF
DC.L 0 ;NEXTIMAGE
PROPGADGET1 DC.L GADGET1 ;NEXTGADGET
DC.W 405+26 ;LEFTEDGE
DC.W 19 ;TOPEDGE
DC.W 19 ;WIDTH
DC.W 61-29 ;HEIGHT
P1FLAGS DC.W GADGHCOMP!GADGIMAGE!GADGDISABLED ;TYPE
DC.W RELVERIFY ;!BOOLEXTEND ;ACTIVATION
DC.W PROPGADGET ;GADGETTYPE
DC.L PROP1SEL ;GADGETRENDER
DC.L 0 ;SELECTRENDER
DC.L 0 ;GADGETTEXT
DC.L 0 ;MUTUALEXCLUDE
DC.L PROPINFO1 ;SPECIALINFO
DC.W 0 ;NUMMER DES GADGETS
DC.L 0 ;USERDATA
PROP1SEL DC.W 0
DC.W 0
DC.W 11 ;WIDTH
DC.W 10 ;HEIGHT
DC.W 0
DC.L 0
DC.B 0
DC.B 0
DC.L 0
PROPINFO1 DC.W AUTOKNOB!FREEVERT ;FLAGS
DC.W 0 ;HORIZPOT
DC.W 0 ;VERTPOT
DC.W $3333 ;HORIZBODY
DC.W $2000 ;VERTBODY
DC.W 0 ;CWIDTH
DC.W 0 ;CHEIGHT
DC.W 0 ;HPOTRES
DC.W 0 ;VPOTRES
DC.W 0 ;LEFTBORDER
DC.W 0 ;TOPBORDER
GADGET1 DC.L GADGET2 ;NEXTGADGET
DC.W 28 ;LEFTEDGE
DC.W 10 ;TOPEDGE
DC.W 400 ;WIDTH
DC.W 10 ;HEIGHT
G1FLAGS DC.W GADGHCOMP ;TYPE
DC.W RELVERIFY ;!BOOLEXTEND ;ACTIVATION
DC.W BOOLGADGET ;GADGETTYPE
DC.L 0 ;GADGETRENDER
DC.L 0 ;SELECTRENDER
DC.L GTEXT1 ;GADGETTEXT
DC.L 0 ;MUTUALEXCLUDE
DC.L 0 ;SPECIALINFO
DC.W 0 ;NUMMER DES GADGETS
DC.L 0 ;USERDATA
GTEXT1 DC.B 1 ;FRONTPEN
DC.B 0 ;BACKPEN
DC.B JAM2 ;DRAWMODE
EVEN
DC.W 2 ;LEFTEDGE
DC.W 1 ;TOPEDGE
DC.L RUBY_FNT ;FONT
T1PTR DC.L TEXT1 ;TEXT
DC.L 0 ;NÄCHSTER TEXT
GADGET2 DC.L GADGET3 ;NEXTGADGET
DC.W 28 ;LEFTEDGE
DC.W 20 ;TOPEDGE
DC.W 400 ;WIDTH
DC.W 10 ;HEIGHT
G2FLAGS DC.W GADGHCOMP!GADGDISABLED ;TYPE
DC.W RELVERIFY ;!BOOLEXTEND ;ACTIVATION
DC.W BOOLGADGET ;GADGETTYPE
DC.L 0 ;GADGETRENDER
DC.L 0 ;SELECTRENDER
DC.L GTEXT2 ;GADGETTEXT
DC.L 0 ;MUTUALEXCLUDE
DC.L 0 ;SPECIALINFO
DC.W 0 ;NUMMER DES GADGETS
DC.L 0 ;USERDATA
GTEXT2 DC.B 1 ;FRONTPEN
DC.B 0 ;BACKPEN
DC.B JAM2 ;DRAWMODE
EVEN
DC.W 2 ;LEFTEDGE
DC.W 1 ;TOPEDGE
DC.L RUBY_FNT ;FONT
T2PTR DC.L TEXT1 ;TEXT
DC.L 0 ;NÄCHSTER TEXT
GADGET3 DC.L GADGET4 ;NEXTGADGET
DC.W 28 ;LEFTEDGE
DC.W 30 ;TOPEDGE
DC.W 400 ;WIDTH
DC.W 10 ;HEIGHT
G3FLAGS DC.W GADGHCOMP!GADGDISABLED ;TYPE
DC.W RELVERIFY ;!BOOLEXTEND ;ACTIVATION
DC.W BOOLGADGET ;GADGETTYPE
DC.L 0 ;GADGETRENDER
DC.L 0 ;SELECTRENDER
DC.L GTEXT3 ;GADGETTEXT
DC.L 0 ;MUTUALEXCLUDE
DC.L 0 ;SPECIALINFO
DC.W 0 ;NUMMER DES GADGETS
DC.L 0 ;USERDATA
GTEXT3 DC.B 1 ;FRONTPEN
DC.B 0 ;BACKPEN
DC.B JAM2 ;DRAWMODE
EVEN
DC.W 2 ;LEFTEDGE
DC.W 1 ;TOPEDGE
DC.L RUBY_FNT ;FONT
T3PTR DC.L TEXT1 ;TEXT
DC.L 0 ;NÄCHSTER TEXT
GADGET4 DC.L GADGET5 ;NEXTGADGET
DC.W 28 ;LEFTEDGE
DC.W 40 ;TOPEDGE
DC.W 400 ;WIDTH
DC.W 10 ;HEIGHT
G4FLAGS DC.W GADGHCOMP!GADGDISABLED ;TYPE
DC.W RELVERIFY ;!BOOLEXTEND ;ACTIVATION
DC.W BOOLGADGET ;GADGETTYPE
DC.L 0 ;GADGETRENDER
DC.L 0 ;SELECTRENDER
DC.L GTEXT4 ;GADGETTEXT
DC.L 0 ;MUTUALEXCLUDE
DC.L 0 ;SPECIALINFO
DC.W 0 ;NUMMER DES GADGETS
DC.L 0 ;USERDATA
GTEXT4 DC.B 1 ;FRONTPEN
DC.B 0 ;BACKPEN
DC.B JAM2 ;DRAWMODE
EVEN
DC.W 2 ;LEFTEDGE
DC.W 1 ;TOPEDGE
DC.L RUBY_FNT ;FONT
T4PTR DC.L TEXT1 ;TEXT
DC.L 0 ;NÄCHSTER TEXT
GADGET5 DC.L 0 ;NEXTGADGET
DC.W 28 ;LEFTEDGE
DC.W 50 ;TOPEDGE
DC.W 400 ;WIDTH
DC.W 10 ;HEIGHT
G5FLAGS DC.W GADGHCOMP!GADGDISABLED ;TYPE
DC.W RELVERIFY ;!BOOLEXTEND ;ACTIVATION
DC.W BOOLGADGET ;GADGETTYPE
DC.L 0 ;GADGETRENDER
DC.L 0 ;SELECTRENDER
DC.L GTEXT5 ;GADGETTEXT
DC.L 0 ;MUTUALEXCLUDE
DC.L 0 ;SPECIALINFO
DC.W 0 ;NUMMER DES GADGETS
DC.L 0 ;USERDATA
GTEXT5 DC.B 1 ;FRONTPEN
DC.B 0 ;BACKPEN
DC.B JAM2 ;DRAWMODE
EVEN
DC.W 2 ;LEFTEDGE
DC.W 1 ;TOPEDGE
DC.L RUBY_FNT ;FONT
T5PTR DC.L TEXT1 ;TEXT
DC.L 0 ;NÄCHSTER TEXT
TEXT1 DC.B 0
EVEN
SRCINFO DC.B 'Source drive is '
SRCDEVICE DC.B 'DF0:',0
DS.B 120
EVEN
DC.B 0
DESTINFO DC.B 'Destination drive is '
DESTDEVICE DC.B 'DF0:',0
DS.B 120
EVEN
PARAMFILENAM DC.B 0
DS.B 200
EVEN
SOURCEIORQ
DC.L 0
DESTIORQ
DC.L 0
BOOTIORQ
DC.L 0
TEXT3 DC.B 'CANCEL',0
EVEN
TEXT2 DC.B 'OK',0
EVEN
BODYTEXT DC.B 0 ;FRONTPEN
DC.B 1 ;BACKPEN
DC.B 1 ;DRAWMODE
EVEN
DC.W $E ;LINKER RAND DES TEXTES
DC.W 6 ;OBERER RAND DES TEXTES
DC.L 0 ;ZEICHENSATZ STANDARD
ASKING DC.L 0 ;DARZUSTELLENDER TEXT
DC.L BODYTEXT2 ;LINK ZU WEITEREN STRUKTUREN
BODYTEXT2 DC.B 0 ;FRONTPEN
DC.B 1 ;BACKPEN
DC.B 1 ;DRAWMODE
EVEN
DC.W $E ;LINKER RAND DES TEXTES
DC.W 6+9 ;OBERER RAND DES TEXTES
DC.L 0 ;ZEICHENSATZ STANDARD
ASKING2 DC.L 0 ;DARZUSTELLENDER TEXT
DC.L 0 ;LINK ZU WEITEREN STRUKTUREN
RIGHTTEXT DC.B 0
DC.B 1
DC.B 1
EVEN
DC.W 6
DC.W 3
DC.L 0
DC.L TEXT3
DC.L 0
LEFTTEXT DC.B 0
DC.B 1
DC.B 1
EVEN
DC.W 6
DC.W 3
DC.L 0
DC.L TEXT2
DC.L 0
;--------------------------------------------------------------------------
POINTARRAY1
DC.W 25+405,8
DC.W 25,8
DC.W 25,61
DC.W 25+405,61
DC.W 25+405,8
POINTARRAY2
DC.W 449,71
DC.W 25,71
DC.W 25,103
DC.W 449,103
DC.W 449,71
POINTARRAY3
DC.W 449,113
DC.W 25,113
DC.W 25,135
DC.W 449,135
DC.W 449,113
DISKFNTBASE DC.L 0
PARAMCOUNT DC.W 10
PARAMTABBASE DC.L 0
DOSBAS DC.L 0 ;\
FILEMEMADR DC.L 0 ; \
INTUIBASE DC.L 0 ; \
GRABASE DC.L 0 ; \
WINDOW1 DC.L 0 ; \
STRFILNAME DC.L 0 ; \
FILPTR DC.L FILNAME ; \
FILSIZE DC.L 0 ; \
LOCKDISKPTR DC.L LOCKDISK ; \
OPENDEVICE DC.L OPENDEV ; \
DEVICESOURCEPTR DC.L 0 ; )
DEVICEDESTPTR DC.L 0 ; /
SPACE DC.L SPECIALSPACE ; /
FORMATZIEL DC.L FORMATDEST ; /
REQUEST DC.L ASKREQUEST ; /
FSSMSOURCEPTR DC.L 0 ; /
FSSMDESTPTR DC.L 0 ; /
INHIBITDR DC.L INHIBITDRIVE ; /
ENABLEDR DC.L ENABLEDRIVE ; /
CRC16 DC.L CRCEVAL ; /
RESERVED DS.B $44 ;/
WIN1RASTPORT DC.L 0
PARAMLOCK DC.L 0
MEMORYBASE DC.L 0
FILHANDLE DC.L 0
OSSTACK DC.L 0
LENGTHBODY DC.W 0
POSOFPROP DC.W 0
SIGNALSTORE DC.L -1
DOSPACKETS DC.L 0
MYPORT DC.L 0
FILENAMEGIVEN DC.B 0
PORTOK DC.B 0
EXEC1PARAM DC.B 0
EVEN
IntuiName dc.b "intuition.library",0
EVEN
graName Dc.b "graphics.library",0
even
DISKFNTNAME DC.B 'diskfont.library',0
EVEN
DOSNAM DC.B 'dos.library',0
EVEN
ROOTBL INCBIN ROOTBL
BOOTBL
DC.B $44,$4F,$53,$00,$C0,$20,$0F,$19
DC.B $00,$00,$03,$70,$43,$FA,$00,$18
DC.B $4E,$AE,$FF,$A0,$4A,$80,$67,$0A
DC.B $20,$40,$20,$68,$00,$16,$70,$00
DC.B $4E,$75,$70,$FF,$60,$FA,$64,$6F
DC.B $73,$2E,$6C,$69,$62,$72,$61,$72
DC.B $79,$00
BOOTEND
SECTION PRG2,BSS
PARAMINFO DS.B $104
SECTION PRG3,BSS
INFODAT DS.B $24
SECTION PRG4,BSS_C
SPECIALSPACE DS.B $C000
SECTION PRG5,DATA_C
PTCHIIM INCBIN GFX/PTCHINACTIVE
PTCHAIM INCBIN GFX/PTCHACTIVE
AUPIIM INCBIN GFX/ARROWUPI
AUPAIM INCBIN GFX/ARROWUPA
ADOWNIIM INCBIN GFX/ARROWDOWNI
ADOWNAIM INCBIN GFX/ARROWDOWNA